"use strict";

const db = uniCloud.database();
const _ = db.command;

/**
 * 定时修改活动的过期时间
 * 注意，活动的时间一般是 下午2-6点
 *
 * 定时修改优惠券的过期时间
 * 优惠券的过期时间一般是直到活动的当天晚上12点左右过期
 *
 * 这里有可能会有bug, 比如活动的结束时间是下午2点, 但是用户在下午6点后才参加活动
 */
module.exports = {
  async main() {
    const collectionImages = db.collection("news-articles-image");
    const collectionCoupons = db.collection("coupons");
    const now = new Date().getTime();

    try {
      // 查找所有未过期且有效期小于当前时间的活动
      const resultImages = await collectionImages
        .where({
          end_time: _.exists(true), // 这个必须放在前面，不然会把所有有validity的数据全都查出来。后面就会更新所有这些数据为“过期”
          end_time: _.lt(now), // 然后和当前时间比较
        })
        .update({
          article_status: 2,
          last_modify_date: now,
        });

      // 查找所有未过期且有效期小于当前时间的优惠券
      const resultCoupons = await collectionCoupons
        .where({
          validity: _.exists(true), // 这个必须放在前面，不然会把所有有validity的数据全都查出来。后面就会更新所有这些数据为“过期”
          validity: _.lt(now), // 然后和当前时间比较
        })
        .update({
          status: 2,
          last_modify_date: now,
        });

      console.log("更新过期优惠券完成，更新数量：", resultCoupons.updated);
      return { resultImages, resultCoupons };
    } catch (error) {
      console.error("更新过期优惠券失败：", error);
      throw error;
    }
  },
};
